1. Field of the Invention
The present invention generally relates to a method and system to update or correct the original boot block of a computer system. More particularly, the invention relates to a method and system to substitute a secondary boot block for the original boot block of a computer system, thereby effectively allowing for modification of the original boot block.
2. Background of the Invention
The procedure for starting up or booting up a computer system is fairly common. When powered on, the computer system executes certain startup code to initialize the system. This startup code is often referred to as a boot block. Essentially, the boot block is intended to create a known state in the computer system from which to begin and to initialize and activate all of the system hardware as necessary. In a personal computer, for example, the boot block includes code to initialize the microprocessor's registers, initialize the DRAM, set-up and recognize other available hardware, etc. This code in a personal computer platform is often referred to as BIOS (Basic Input/Output System). The boot block may need to perform different functions depending on the particular system or platform; however, every system requires some sort of startup code. Therefore every system has some type of a boot block.
Because the boot block initializes the system, it is often stored in protected memory to avoid inadvertent or uninformed modification of its contents. For without the boot block, the computer system cannot be started. In addition, for the boot block to perform its function, it must be stored in memory that is available immediately on startup. Accordingly, the boot block is typically stored in hardware-protected ROM (Read Only Memory) that requires no startup initialization by the computer system. For example, the boot block may be stored in a PROM (Programmable Read Only Memory) that requires no initialization and is protected from modification since a programming device separate from the computer system is typically required to change the memory. In fact, some PROMs are one-shot devices, meaning they can only be programmed once. EPROMs (Erasable Programmable Read Only Memory) may also be used since they require no initialization and, although they are erasable, they typically require UV (ultra violet) radiation to erase them. More recently, however, less costly FlashROMs have been used which have at least a portion of their memory hardware-protected, meaning some hardware interference is required to change that portion of the memory.
Having the boot block stored in unalterable or hardware-protected memory does, however, create some difficulties. In particular, it is by design difficult to update or correct the boot block. While it is desirable to protect the boot block from unintentional or uninformed modification of its contents, i.e., by a user of the computer system, there are times when the boot block may need to be modified. For example, when the system designers want to implement an upgrade to the system which requires a modification to the boot block, perhaps because there was a glitch or bug in the original boot block, or to allow the system to handle conditions not foreseen previously. Whatever the reason, there are times when the boot block needs to be modified. In the past, this meant that most boot block ROMs were mounted to a board in the system via a socket. This allowed the boot block to be changed by physically replacing the ROM with a new ROM containing the updated boot block. Sockets, however, have fallen into disfavor for most computer systems. In particular, sockets add cost to the system, both in terms of the additional materials cost as well as the manufacturing costs. Today, most boot block ROMs are now soldered to the board. Although cheaper to manufacture, this means replacement of the board is required in order to replace the ROM. Obviously, neither solution is desirable.
One solution would be to place the boot block in alterable memory (i.e., memory that can be changed by the system). Although this solution would appear to resolve the replacement problem discussed above, unprotecting the boot block creates a risk of inadvertent or uninformed modification of the boot block. In addition, any attempt to modify or update the original boot block presents a real risk of rendering the system inoperable and unrecoverable since the original boot block has not been maintained.